package expertise.titan.dao.vertex;

import com.thinkaurelius.titan.core.TitanTransaction;
import com.thinkaurelius.titan.diskstorage.StorageException;

import expertise.titan.schema.vertex.Employee;
import expertise.titan.schema.vertex.Skill;

/**
 * DAO for interfacing with the graph, centering around the {@link Employee}
 * vertex.
 * 
 * @author bdgould
 * 
 */
public interface EmployeeDao extends VertexDao<Employee> {

    /**
     * Fetch the {@link Skill} objects a particular {@link Employee} is linked
     * to.
     * 
     * @param employee
     *            The {@link Employee} to search on
     * @param transaction
     *            The {@link TitanTransaction} to use to fetch the {@link Skill}
     *            objects
     * @throws StorageException
     *             If there is an issue interfacing with the graph
     */
    void lazyLoadEmployeeSkills(final Employee employee, final TitanTransaction transaction) throws StorageException;

}
